
import { BACKEND_CONFIG, getRealApiUrl, transformParams, transformResponse, DEBUG_CONFIG } from '../config/backend.js';

export const baseUrl = BACKEND_CONFIG.baseUrl;
let whiteArr = []
export function http(originalUrl, data = {}, method = 'GET') {
	// 获取映射后的真实API地址
	const realUrl = getRealApiUrl(originalUrl);
	
	// 转换请求参数
	const transformedParams = transformParams(realUrl, data);
	
	// 获取token
	const token = uni.getStorageSync('token') || '';
	
	if (DEBUG_CONFIG.enableDetailLog) {
		console.log('请求映射:', originalUrl, '->', realUrl);
		console.log('原始参数:', data);
		console.log('转换后参数:', transformedParams);
		console.log('Token状态:', token ? '已设置' : '未设置');
	}
	
	return new Promise((resolve, reject) => {
		// 构建请求头
		const headers = {
			'content-type': 'application/json'
		};
		
		// 只有当token存在时才添加Authorization header
		if (token) {
			headers['Authorization'] = 'Bearer ' + token;
		}
		
		uni.request({
			url: baseUrl + (realUrl.startsWith('/') ? realUrl : '/' + realUrl),
			data: transformedParams,
			header: headers,
			method,
			success: (res) => {
				if (DEBUG_CONFIG.enableDetailLog) {
					console.log('API原始响应:', res.data);
				}
				
				if (res.statusCode == 200) {
					// 使用响应转换器处理响应数据
					const transformedResponse = transformResponse(res.data, realUrl);
					
					if (DEBUG_CONFIG.enableDetailLog) {
						console.log('转换后响应:', transformedResponse);
					}
					
					// 判断响应是否成功
					if (transformedResponse.code == 1 || transformedResponse.code == 200) {
						// 成功情况：code=1或200
						resolve(transformedResponse.data)
					} else if (transformedResponse.code == 401) {
						// 未授权，需要重新登录
						let pages = getCurrentPages();
						var currPage = pages[pages.length - 1]; //当前页面
						let pageUrl = '/' + currPage.route;
						if (uni.getStorageSync('token')) {
							//登陆过期
							uni.showToast({
								title: "登录过期",
								icon: 'none'
							})
							uni.removeStorageSync('userInfo')
							uni.removeStorageSync('token')
							setTimeout(() => {
								uni.navigateTo({
									url: '/pages/login/login?url=' + pageUrl
								})
							}, 800)
						} else {
							uni.navigateTo({
								url: '/pages/login/login?url=' + pageUrl
							})
						}
					} else {
						// 其他错误情况
						uni.showToast({
							title: transformedResponse.msg || '请求失败',
							icon: 'none'
						})
						reject(transformedResponse.msg || '请求失败')
					}
				} else {
					// HTTP状态码不是200
					uni.showToast({
						title: "接口请求失败" + res.statusCode,
						icon: 'none'
					})
					reject("接口请求失败" + res.statusCode)
				}
			},
			fail: (res) => {
				console.error('请求失败:', res);
				uni.showToast({
					title: '服务器请求异常',
					icon: 'none'
				})
				reject('服务器请求异常')
			},
			complete: () => {

			}
		});
	})
}

